//package com.iecas.test;
//
//import java.awt.*;
//import java.awt.event.*;
//import java.util.ArrayList;
//import java.util.Iterator;
//import java.util.List;
//import java.util.Random;
//import javax.swing.*;
//
//public class TankWarGame extends JFrame {
//    private static final int WIDTH = 800;
//    private static final int HEIGHT = 600;
//    private GamePanel gamePanel;
//
//    public TankWarGame() {
//        setTitle("坦克大战");
//        setSize(WIDTH, HEIGHT);
//        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//        setResizable(false);
//        setLocationRelativeTo(null);
//
//        gamePanel = new GamePanel();
//        add(gamePanel);
//
//        setVisible(true);
//    }
//
//    public static void main(String[] args) {
//        SwingUtilities.invokeLater(TankWarGame::new);
//    }
//}
//
//class GamePanel extends JPanel implements ActionListener, KeyListener {
//    private static final int DELAY = 10;
//    private Timer timer;
//    private PlayerTank player;
//    private List<EnemyTank> enemies;
//    private List<Bullet> bullets;
//    private List<Wall> walls;
//    private List<Reward> rewards;
//    private List<Explosion> explosions;
//    private int score;
//    private int lives;
//    private int level;
//    private boolean gameOver;
//    private Random random;
//
//    public GamePanel() {
//        setBackground(Color.BLACK);
//        setFocusable(true);
//        addKeyListener(this);
//
//        random = new Random();
//        initGame();
//
//        timer = new Timer(DELAY, this);
//        timer.start();
//    }
//
//    private void initGame() {
//        player = new PlayerTank(375, 500);
//        enemies = new ArrayList<>();
//        bullets = new ArrayList<>();
//        walls = new ArrayList<>();
//        rewards = new ArrayList<>();
//        explosions = new ArrayList<>();
//        score = 0;
//        lives = 3;
//        level = 1;
//        gameOver = false;
//
//        createWalls();
//        createEnemies();
//        spawnReward();
//    }
//
//    private void createWalls() {
//        // 创建砖墙
//        for (int i = 0; i < 10; i++) {
//            for (int j = 0; j < 3; j++) {
//                walls.add(new Wall(100 + i * 60, 150 + j * 30, Wall.Type.BRICK));
//            }
//        }
//
//        // 创建钢墙
//        for (int i = 0; i < 5; i++) {
//            for (int j = 0; j < 2; j++) {
//                walls.add(new Wall(200 + i * 100, 300 + j * 30, Wall.Type.STEEL));
//            }
//        }
//
//        // 创建水域
//        for (int i = 0; i < 7; i++) {
//            walls.add(new Wall(150 + i * 80, 400, Wall.Type.WATER));
//        }
//    }
//
//    private void createEnemies() {
//        enemies.clear();
//        int enemyCount = 5 + level * 2;
//        for (int i = 0; i < enemyCount; i++) {
//            int x = 50 + i % 4 * 150;
//            int y = 50 + i / 4 * 70;
//            int type = random.nextInt(3); // 0-普通坦克, 1-快速坦克, 2-重型坦克
//            enemies.add(new EnemyTank(x, y, type));
//        }
//    }
//
//    private void spawnReward() {
//        if (rewards.size() < 2 && random.nextInt(1000) < 3) {
//            int x = 100 + random.nextInt(600);
//            int y = 100 + random.nextInt(300);
//            int type = random.nextInt(5); // 0-生命, 1-火力增强, 2-速度提升, 3-防护罩, 4-炸弹
//            rewards.add(new Reward(x, y, type));
//        }
//    }
//
//    @Override
//    protected void paintComponent(Graphics g) {
//        super.paintComponent(g);
//        Graphics2D g2d = (Graphics2D) g;
//
//        // 绘制玩家坦克
//        player.draw(g2d);
//
//        // 绘制敌人坦克
//        for (EnemyTank enemy : enemies) {
//            enemy.draw(g2d);
//        }
//
//        // 绘制子弹
//        for (Bullet bullet : bullets) {
//            bullet.draw(g2d);
//        }
//
//        // 绘制墙壁
//        for (Wall wall : walls) {
//            wall.draw(g2d);
//        }
//
//        // 绘制奖励
//        for (Reward reward : rewards) {
//            reward.draw(g2d);
//        }
//
//        // 绘制爆炸效果
//        for (Explosion explosion : explosions) {
//            explosion.draw(g2d);
//        }
//
//        // 绘制游戏信息
//        g2d.setColor(Color.WHITE);
//        g2d.setFont(new Font("Arial", Font.BOLD, 16));
//        g2d.drawString("分数: " + score, 20, 30);
//        g2d.drawString("生命: " + lives, 120, 30);
//        g2d.drawString("等级: " + level, 220, 30);
//
//        // 绘制游戏结束信息
//        if (gameOver) {
//            g2d.setFont(new Font("Arial", Font.BOLD, 48));
//            g2d.setColor(Color.RED);
//            g2d.drawString("游戏结束", 300, 250);
//            g2d.setFont(new Font("Arial", Font.BOLD, 24));
//            g2d.drawString("按 R 键重新开始", 320, 300);
//        }
//    }
//
//    @Override
//    public void actionPerformed(ActionEvent e) {
//        if (gameOver) {
//            return;
//        }
//
//        // 更新玩家坦克
//        player.move();
//
//        // 更新敌人坦克
//        for (EnemyTank enemy : enemies) {
//            enemy.move();
//            if (random.nextInt(1000) < 5) {
//                bullets.add(enemy.fire());
//            }
//        }
//
//        // 更新子弹
//        Iterator<Bullet> bulletIter = bullets.iterator();
//        while (bulletIter.hasNext()) {
//            Bullet bullet = bulletIter.next();
//            bullet.move();
//
//            // 检查子弹是否击中墙壁
//            Iterator<Wall> wallIter = walls.iterator();
//            boolean bulletHit = false;
//            while (wallIter.hasNext()) {
//                Wall wall = wallIter.next();
//                if (bullet.getBounds().intersects(wall.getBounds())) {
//                    if (wall.getType() == Wall.Type.BRICK) {
//                        wallIter.remove();
//                    } else if (wall.getType() == Wall.Type.STEEL &&
//                            (bullet.getType() == Bullet.Type.PLAYER_POWER ||
//                                    bullet.getType() == Bullet.Type.ENEMY_POWER)) {
//                        wallIter.remove();
//                    }
//                    bulletIter.remove();
//                    bulletHit = true;
//                    explosions.add(new Explosion(bullet.getX(), bullet.getY()));
//                    break;
//                }
//            }
//            if (bulletHit) continue;
//
//            // 检查子弹是否击中玩家
//            if (bullet.getType() == Bullet.Type.ENEMY &&
//                    !player.isInvincible() &&
//                    bullet.getBounds().intersects(player.getBounds())) {
//                player.hit();
//                bulletIter.remove();
//                explosions.add(new Explosion(bullet.getX(), bullet.getY()));
//                if (player.getHealth() <= 0) {
//                    lives--;
//                    if (lives <= 0) {
//                        gameOver = true;
//                    } else {
//                        player.respawn();
//                    }
//                }
//                continue;
//            }
//
//            // 检查子弹是否击中敌人
//            if (bullet.getType() == Bullet.Type.PLAYER ||
//                    bullet.getType() == Bullet.Type.PLAYER_POWER) {
//                Iterator<EnemyTank> enemyIter = enemies.iterator();
//                while (enemyIter.hasNext()) {
//                    EnemyTank enemy = enemyIter.next();
//                    if (bullet.getBounds().intersects(enemy.getBounds())) {
//                        enemy.hit();
//                        bulletIter.remove();
//                        explosions.add(new Explosion(bullet.getX(), bullet.getY()));
//                        if (enemy.getHealth() <= 0) {
//                            explosions.add(new Explosion(enemy.getX(), enemy.getY()));
//                            enemyIter.remove();
//                            score += 100 + enemy.getType() * 50;
//                        }
//                        break;
//                    }
//                }
//            }
//
//            // 检查子弹是否超出边界
//            if (bullet.getX() < 0 || bullet.getX() > 800 ||
//                    bullet.getY() < 0 || bullet.getY() > 600) {
//                bulletIter.remove();
//            }
//        }
//
//        // 检查玩家是否吃到奖励
//        Iterator<Reward> rewardIter = rewards.iterator();
//        while (rewardIter.hasNext()) {
//            Reward reward = rewardIter.next();
//            if (player.getBounds().intersects(reward.getBounds())) {
//                switch (reward.getType()) {
//                    case 0: // 生命
//                        lives++;
//                        break;
//                    case 1: // 火力增强
//                        player.powerUp();
//                        break;
//                    case 2: // 速度提升
//                        player.speedUp();
//                        break;
//                    case 3: // 防护罩
//                        player.setInvincible(true);
//                        break;
//                    case 4: // 炸弹
//                        score += enemies.size() * 100;
//                        explosions.addAll(createBombExplosions());
//                        enemies.clear();
//                        break;
//                }
//                rewardIter.remove();
//            }
//        }
//
//        // 移除过期的爆炸效果
//        Iterator<Explosion> explosionIter = explosions.iterator();
//        while (explosionIter.hasNext()) {
//            Explosion explosion = explosionIter.next();
//            if (explosion.isFinished()) {
//                explosionIter.remove();
//            }
//        }
//
//        // 检查关卡是否完成
//        if (enemies.isEmpty()) {
//            level++;
//            createEnemies();
//            spawnReward();
//        }
//
//        // 随机生成奖励
//        spawnReward();
//
//        // 重绘面板
//        repaint();
//    }
//
//    private List<Explosion> createBombExplosions() {
//        List<Explosion> bombExplosions = new ArrayList<>();
//        for (EnemyTank enemy : enemies) {
//            bombExplosions.add(new Explosion(enemy.getX(), enemy.getY()));
//        }
//        return bombExplosions;
//    }
//
//    @Override
//    public void keyPressed(KeyEvent e) {
//        player.keyPressed(e);
//        if (e.getKeyCode() == KeyEvent.VK_SPACE) {
//            bullets.add(player.fire());
//        }
//        if (e.getKeyCode() == KeyEvent.VK_R && gameOver) {
//            initGame();
//        }
//    }
//
//    @Override
//    public void keyReleased(KeyEvent e) {
//        player.keyReleased(e);
//    }
//
//    @Override
//    public void keyTyped(KeyEvent e) {}
//}
//
//abstract class Tank {
//    protected int x, y;
//    protected int direction; // 0-上, 1-右, 2-下, 3-左
//    protected int speed;
//    protected int health;
//    protected int width = 40;
//    protected int height = 40;
//    protected boolean moving;
//    protected long lastFired;
//    protected long fireRate = 500; // 发射间隔(毫秒)
//    protected Bullet.Type bulletType = Bullet.Type.NORMAL;
//
//    public Tank(int x, int y) {
//        this.x = x;
//        this.y = y;
//        this.direction = 0;
//        this.speed = 2;
//        this.health = 1;
//        this.moving = false;
//        this.lastFired = 0;
//    }
//
//    public abstract void draw(Graphics2D g2d);
//    public abstract void move();
//
//    public Bullet fire() {
//        long currentTime = System.currentTimeMillis();
//        if (currentTime - lastFired < fireRate) {
//            return null;
//        }
//        lastFired = currentTime;
//
//        int bulletX = x + width / 2 - Bullet.SIZE / 2;
//        int bulletY = y + height / 2 - Bullet.SIZE / 2;
//
//        return new Bullet(bulletX, bulletY, direction, bulletType);
//    }
//
//    public void hit() {
//        health--;
//    }
//
//    public Rectangle getBounds() {
//        return new Rectangle(x, y, width, height);
//    }
//
//    public int getX() { return x; }
//    public int getY() { return y; }
//    public int getHealth() { return health; }
//}
//
//class PlayerTank extends Tank {
//    private boolean[] keys = new boolean[4]; // 上,右,下,左
//    private boolean invincible;
//    private long invincibleEndTime;
//    private int powerLevel = 1;
//    private long powerEndTime;
//
//    public PlayerTank(int x, int y) {
//        super(x, y);
//        this.speed = 3;
//        this.health = 1;
//    }
//
//    @Override
//    public void draw(Graphics2D g2d) {
//        // 绘制坦克主体
//        g2d.setColor(Color.GREEN);
//        g2d.fillRect(x, y, width, height);
//
//        // 绘制坦克炮塔
//        g2d.setColor(Color.DARK_GRAY);
//        switch (direction) {
//            case 0: // 上
//                g2d.fillRect(x + width / 2 - 2, y - 10, 4, 20);
//                break;
//            case 1: // 右
//                g2d.fillRect(x + width - 10, y + height / 2 - 2, 20, 4);
//                break;
//            case 2: // 下
//                g2d.fillRect(x + width / 2 - 2, y + height - 10, 4, 20);
//                break;
//            case 3: // 左
//                g2d.fillRect(x - 10, y + height / 2 - 2, 20, 4);
//                break;
//        }
//
//        // 绘制坦克轮子
//        g2d.setColor(Color.BLACK);
//        g2d.fillRect(x - 2, y - 2, 4, height + 4);
//        g2d.fillRect(x + width - 2, y - 2, 4, height + 4);
//        g2d.fillRect(x - 2, y - 2, width + 4, 4);
//        g2d.fillRect(x - 2, y + height - 2, width + 4, 4);
//
//        // 绘制无敌状态
//        if (invincible && (System.currentTimeMillis() / 100 % 2 == 0)) {
//            g2d.setColor(Color.YELLOW);
//            g2d.drawRect(x - 2, y - 2, width + 4, height + 4);
//        }
//
//        // 绘制火力增强状态
//        if (powerLevel > 1 && (System.currentTimeMillis() / 100 % 2 == 0)) {
//            g2d.setColor(Color.RED);
//            g2d.drawRect(x - 5, y - 5, width + 10, height + 10);
//        }
//    }
//
//    @Override
//    public void move() {
//        // 更新无敌状态
//        if (invincible && System.currentTimeMillis() > invincibleEndTime) {
//            invincible = false;
//        }
//
//        // 更新火力增强状态
//        if (powerLevel > 1 && System.currentTimeMillis() > powerEndTime) {
//            powerLevel = 1;
//            bulletType = Bullet.Type.NORMAL;
//            fireRate = 500;
//        }
//
//        // 处理移动
//        if (!moving) return;
//
//        int prevX = x;
//        int prevY = y;
//
//        if (keys[0]) { // 上
//            direction = 0;
//            y -= speed;
//        } else if (keys[1]) { // 右
//            direction = 1;
//            x += speed;
//        } else if (keys[2]) { // 下
//            direction = 2;
//            y += speed;
//        } else if (keys[3]) { // 左
//            direction = 3;
//            x -= speed;
//        }
//
//        // 边界检查
//        if (x < 0) x = 0;
//        if (x > 800 - width) x = 800 - width;
//        if (y < 0) y = 0;
//        if (y > 600 - height) y = 600 - height;
//    }
//
//    public void keyPressed(KeyEvent e) {
//        int keyCode = e.getKeyCode();
//        if (keyCode == KeyEvent.VK_UP) {
//            keys[0] = true;
//            moving = true;
//        }
//        if (keyCode == KeyEvent.VK_RIGHT) {
//            keys[1] = true;
//            moving = true;
//        }
//        if (keyCode == KeyEvent.VK_DOWN) {
//            keys[2] = true;
//            moving = true;
//        }
//        if (keyCode == KeyEvent.VK_LEFT) {
//            keys[3] = true;
//            moving = true;
//        }
//    }
//
//    public void keyReleased(KeyEvent e) {
//        int keyCode = e.getKeyCode();
//        if (keyCode == KeyEvent.VK_UP) keys[0] = false;
//        if (keyCode == KeyEvent.VK_RIGHT) keys[1] = false;
//        if (keyCode == KeyEvent.VK_DOWN) keys[2] = false;
//        if (keyCode == KeyEvent.VK_LEFT) keys[3] = false;
//
//        // 检查是否还有按键被按下
//        moving = keys[0] || keys[1] || keys[2] || keys[3];
//    }
//
//    public void respawn() {
//        x = 375;
//        y = 500;
//        direction = 0;
//        health = 1;
//        setInvincible(true);
//    }
//
//    public void setInvincible(boolean invincible) {
//        this.invincible = invincible;
//        this.invincibleEndTime = System.currentTimeMillis() + 3000; // 3秒无敌时间
//    }
//
//    public boolean isInvincible() {
//        return invincible;
//    }
//
//    public void powerUp() {
//        powerLevel = 2;
//        bulletType = Bullet.Type.PLAYER_POWER;
//        fireRate = 300;
//        powerEndTime = System.currentTimeMillis() + 10000; // 10秒增强时间
//    }
//
//    public void speedUp() {
//        speed = 5;
//        powerEndTime = System.currentTimeMillis() + 10000; // 10秒加速时间
//    }
//}
//
//class EnemyTank extends Tank {
//    private int type;
//    private long lastDirectionChange;
//    private int directionChangeInterval;
//    private Random random = new Random();
//
//    public EnemyTank(int x, int y, int type) {
//        super(x, y);
//        this.type = type;
//        this.direction = random.nextInt(4);
//        this.moving = true;
//        this.lastDirectionChange = System.currentTimeMillis();
//
//        switch (type) {
//            case 0: // 普通坦克
//                this.speed = 2;
//                this.health = 1;
//                this.directionChangeInterval = 2000;
//                break;
//            case 1: // 快速坦克
//                this.speed = 4;
//                this.health = 1;
//                this.directionChangeInterval = 1500;
//                break;
//            case 2: // 重型坦克
//                this.speed = 1;
//                this.health = 3;
//                this.directionChangeInterval = 3000;
//                break;
//        }
//    }
//
//    @Override
//    public void draw(Graphics2D g2d) {
//        // 根据坦克类型设置颜色
//        Color tankColor;
//        switch (type) {
//            case 0: tankColor = Color.RED; break;
//            case 1: tankColor = Color.ORANGE; break;
//            case 2: tankColor = Color.DARK_GRAY; break;
//            default: tankColor = Color.RED;
//        }
//
//        // 绘制坦克主体
//        g2d.setColor(tankColor);
//        g2d.fillRect(x, y, width, height);
//
//        // 绘制坦克炮塔
//        g2d.setColor(Color.BLACK);
//        switch (direction) {
//            case 0: // 上
//                g2d.fillRect(x + width / 2 - 2, y - 10, 4, 20);
//                break;
//            case 1: // 右
//                g2d.fillRect(x + width - 10, y + height / 2 - 2, 20, 4);
//                break;
//            case 2: // 下
//                g2d.fillRect(x + width / 2 - 2, y + height - 10, 4, 20);
//                break;
//            case 3: // 左
//                g2d.fillRect(x - 10, y + height / 2 - 2, 20, 4);
//                break;
//        }
//
//        // 绘制坦克轮子
//        g2d.setColor(Color.BLACK);
//        g2d.fillRect(x - 2, y - 2, 4, height + 4);
//        g2d.fillRect(x + width - 2, y - 2, 4, height + 4);
//        g2d.fillRect(x - 2, y - 2, width + 4, 4);
//        g2d.fillRect(x - 2, y + height - 2, width + 4, 4);
//
//        // 绘制重型坦克的生命值
//        if (type == 2) {
//            g2d.setColor(Color.WHITE);
//            g2d.fillRect(x + 5, y - 5, 30, 5);
//            g2d.setColor(Color.GREEN);
//            g2d.fillRect(x + 5, y - 5, 10 * health, 5);
//        }
//    }
//
//    @Override
//    public void move() {
//        // 随机改变方向
//        long currentTime = System.currentTimeMillis();
//        if (currentTime - lastDirectionChange > directionChangeInterval) {
//            direction = random.nextInt(4);
//            lastDirectionChange = currentTime;
//        }
//
//        int prevX = x;
//        int prevY = y;
//
//        // 根据方向移动
//        switch (direction) {
//            case 0: // 上
//                y -= speed;
//                break;
//            case 1: // 右
//                x += speed;
//                break;
//            case 2: // 下
//                y += speed;
//                break;
//            case 3: // 左
//                x -= speed;
//                break;
//        }
//
//        // 边界检查
//        if (x < 0) {
//            x = 0;
//            direction = 1; // 转向右
//        }
//        if (x > 800 - width) {
//            x = 800 - width;
//            direction = 3; // 转向左
//        }
//        if (y < 0) {
//            y = 0;
//            direction = 2; // 转向下
//        }
//        if (y > 600 - height) {
//            y = 600 - height;
//            direction = 0; // 转向上
//        }
//    }
//
//    public int getType() {
//        return type;
//    }
//}
//
//class Bullet {
//    public static final int SIZE = 8;
//    private int x, y;
//    private int direction;
//    private int speed = 6;
//    private Type type;
//
//    public enum Type {
//        NORMAL, PLAYER_POWER, ENEMY_POWER,ENEMY,PLAYER
//    }
//
//    public Bullet(int x, int y, int direction, Type type) {
//        this.x = x;
//        this.y = y;
//        this.direction = direction;
//        this.type = type;
//    }
//
//    public void move() {
//        switch (direction) {
//            case 0: y -= speed; break;
//            case 1: x += speed; break;
//            case 2: y += speed; break;
//            case 3: x -= speed; break;
//        }
//    }
//
//    public void draw(Graphics2D g2d) {
//        if (type == Type.NORMAL || type == Type.ENEMY_POWER) {
//            g2d.setColor(Color.YELLOW);
//        } else {
//            g2d.setColor(Color.RED);
//        }
//        g2d.fillOval(x, y, SIZE, SIZE);
//    }
//
//    public Rectangle getBounds() {
//        return new Rectangle(x, y, SIZE, SIZE);
//    }
//
//    public int getX() { return x; }
//    public int getY() { return y; }
//    public Type getType() { return type; }
//}
//
//class Wall {
//    private int x, y;
//    private int width = 30;
//    private int height = 30;
//    private Type type;
//
//    public enum Type {
//        BRICK, STEEL, WATER
//    }
//
//    public Wall(int x, int y, Type type) {
//        this.x = x;
//        this.y = y;
//        this.type = type;
//    }
//
//    public void draw(Graphics2D g2d) {
//        switch (type) {
//            case BRICK:
//                g2d.setColor(Color.RED);
//                g2d.fillRect(x, y, width, height);
//                g2d.setColor(Color.BLACK);
//                g2d.drawRect(x, y, width, height);
//                break;
//            case STEEL:
//                g2d.setColor(Color.GRAY);
//                g2d.fillRect(x, y, width, height);
//                g2d.setColor(Color.BLACK);
//                g2d.drawRect(x, y, width, height);
//                g2d.drawLine(x, y, x + width, y + height);
//                g2d.drawLine(x + width, y, x, y + height);
//                break;
//            case WATER:
//                g2d.setColor(Color.BLUE);
//                g2d.fillRect(x, y, width, height);
//                g2d.setColor(Color.CYAN);
//                for (int i = 0; i < 4; i++) {
//                    int offset = (int) (System.currentTimeMillis() / 100) % 30;
//                    g2d.drawLine(x, y + i * 8 + offset % 8, x + width, y + i * 8 + offset % 8);
//                }
//                break;
//        }
//    }
//
//    public Rectangle getBounds() {
//        return new Rectangle(x, y, width, height);
//    }
//
//    public Type getType() {
//        return type;
//    }
//}
//
//class Reward {
//    private int x, y;
//    private int width = 25;
//    private int height = 25;
//    private int type;
//    private long startTime;
//    private long duration = 10000; // 10秒后消失
//
//    public Reward(int x, int y, int type) {
//        this.x = x;
//        this.y = y;
//        this.type = type;
//        this.startTime = System.currentTimeMillis();
//    }
//
//    public void draw(Graphics2D g2d) {
//        // 闪烁效果
//        long elapsed = System.currentTimeMillis() - startTime;
//        if (elapsed > duration - 3000 && (elapsed / 200 % 2 == 0)) {
//            return;
//        }
//
//        // 根据奖励类型绘制不同的图标
//        switch (type) {
//            case 0: // 生命
//                g2d.setColor(Color.RED);
//                g2d.fillOval(x, y, width, height);
//                g2d.setColor(Color.WHITE);
//                g2d.setFont(new Font("Arial", Font.BOLD, 14));
//                g2d.drawString("+1", x + 5, y + 18);
//                break;
//            case 1: // 火力增强
//                g2d.setColor(Color.YELLOW);
//                g2d.fillRect(x, y, width, height);
//                g2d.setColor(Color.RED);
//                g2d.drawLine(x + 5, y + height / 2, x + width - 5, y + height / 2);
//                g2d.drawLine(x + width / 2, y + 5, x + width / 2, y + height - 5);
//                break;
//            case 2: // 速度提升
//                g2d.setColor(Color.CYAN);
//                g2d.fillRoundRect(x, y, width, height, 10, 10);
//                g2d.setColor(Color.BLACK);
//                g2d.drawLine(x + 5, y + height / 2, x + width - 5, y + height / 2);
//                g2d.drawLine(x + width - 10, y + 5, x + width - 5, y + height / 2);
//                g2d.drawLine(x + width - 10, y + height - 5, x + width - 5, y + height / 2);
//                break;
//            case 3: // 防护罩
//                g2d.setColor(Color.BLUE);
//                g2d.fillOval(x, y, width, height);
//                g2d.setColor(Color.WHITE);
//                g2d.drawOval(x + 3, y + 3, width - 6, height - 6);
//                break;
//            case 4: // 炸弹
//                g2d.setColor(Color.MAGENTA);
//                g2d.fillRect(x, y, width, height);
//                g2d.setColor(Color.YELLOW);
//                g2d.fillOval(x + 5, y + 5, width - 10, height - 10);
//                break;
//        }
//    }
//
//    public Rectangle getBounds() {
//        return new Rectangle(x, y, width, height);
//    }
//
//    public int getType() {
//        return type;
//    }
//
//    public boolean isExpired() {
//        return System.currentTimeMillis() - startTime > duration;
//    }
//}
//
//class Explosion {
//    private int x, y;
//    private int size;
//    private int maxSize = 60;
//    private int step = 2;
//    private boolean finished;
//
//    public Explosion(int x, int y) {
//        this.x = x;
//        this.y = y;
//        this.size = 10;
//        this.finished = false;
//    }
//
//    public void draw(Graphics2D g2d) {
//        if (finished) return;
//
//        // 绘制爆炸效果
//        g2d.setColor(Color.ORANGE);
//        g2d.fillOval(x - size / 2, y - size / 2, size, size);
//        g2d.setColor(Color.YELLOW);
//        g2d.fillOval(x - size / 4, y - size / 4, size / 2, size / 2);
//
//        // 更新爆炸大小
//        size += step;
//        if (size >= maxSize) {
//            finished = true;
//        }
//    }
//
//    public boolean isFinished() {
//        return finished;
//    }
//}